package cate.game.server.configuration;

import cate.game.util.DebugGameConf;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Data
@Configuration
@ConfigurationProperties(prefix = "cate")
public class DebugGlobalConf {

    /** 是否在调试公共服，无论是演示环境还是外网，这个值都应该是false */
    @Value("${cate.debugShareService:false}")
    public boolean debugShareService;

    /** 是否采取快速启动，该模式会导致很多业务逻辑模块出错，仅用于调试某些基础设施加速启动用，
     * 无论是演示环境还是外网，这个值都应该是false */
    @Value("${cate.debugFastStartup:false}")
    public boolean debugFastStartup;

    @Value("${cate.debugExcelLoadDisabled:false}")
    public boolean debugExcelLoadDisabled;

    public void check() {
        DebugGameConf.debugShareService = this.debugShareService;
        DebugGameConf.debugFastStartup = this.debugFastStartup;
        DebugGameConf.debugExcelLoadDisabled = this.debugExcelLoadDisabled;
        if(this.debugShareService) {
            log.error("当前处于调试公共服状态！在内网演示环境与外网正式环境都是不允许的！");
            log.error("仅供本地单独调试公共服时允许开启@debugShareService");
        }
        if(this.debugFastStartup) {
            log.error("当前处于调试快速启动状态！该模式会导致很多业务逻辑模块出错！在内网演示环境与外网正式环境都是不允许的！");
            log.error("仅供本地单独调试公共服时允许开启@debugFastStartup");
            this.debugExcelLoadDisabled = true;
        }
        if(this.debugExcelLoadDisabled) {
            log.error("当前处于debugExcelLoadDisabled状态！该模式会导致很多业务逻辑模块出错！在内网演示环境与外网正式环境都是不允许的！");
            log.error("仅供本地单独调试公共服时允许开启@debugExcelLoadDisabled");
        }
    }
}
